package com.web.servlet.bean;

import java.sql.Date;
import java.sql.Timestamp;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.gson.ExclusionStrategy;
import com.google.gson.FieldAttributes;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.web.servlet.manager.RedisManager;
/**
 * 桌子信息
 * @author davie.yu
 *
 */
public class TableInfo extends DataObject {
	
	final static String exclude = "|isDirty|op|playerType|";// 设置过滤的属性
	public static final Logger log = LoggerFactory.getLogger(TableInfo.class);
	static Gson g = new GsonBuilder().setExclusionStrategies(
			new ExclusionStrategy() {

				/**
				 * 设置要过滤的属性
				 */
				@Override
				public boolean shouldSkipField(FieldAttributes attr) {
					boolean b = false;
					// if (attr.getDeclaringClass() == PlayerModel.class)
					// {//可选指定过滤所属类
					b = exclude.contains("|" + attr.getName() + "|");
					// }
					return b;
				}

				/**
				 * 设置要过滤的类
				 */
				@Override
				public boolean shouldSkipClass(Class<?> clazz) {
					// 这里，如果返回true就表示此类要过滤，否则就输出
					return false;
				}
			}).create();
	// /////////////////json_id////////////////////////////////////////////////////////////////////
	
	public int table_id;//桌子号
	public String roomId;//创建时的房间号
	public String sorce;//底分
	public String season;//局数
	public int num;//当前人数
	public int max;//最大人数
	public int pay_type;//房费支付方式  房主 AAA
	public int play_type;//玩法 15张  16张
	public int bomb_type;//炸弹 是否可以拆
	
	
	
	
	@Override
	public boolean load() {
		return false;
	}
	@Override
	public void save() {
		String value = pack();
		log.debug(value);
		RedisManager.getRedis().set(RedisKey.TABLEINFO + this.table_id,value);
	}
	/**
	 * 生成json格式
	 * 
	 * @return
	 */
	public String pack() {
		return g.toJson(this);
	}
	
	/**
	 * 从json解析Player
	 * 
	 * @param json
	 */
	public static TableInfo parse(String json) {
		try {
			return g.fromJson(json, TableInfo.class);
		} catch (Exception e) {
			log.error("TableInfo",e);
			//log.error("parse error:" + Util.getExceptionStack(e));
		}
		return new TableInfo();
	}
	
	
	
}
